package Dat04;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.util.Scanner;

public class Test02 {
    /**
     * 修改user.dat文件中用户的密码
     * user.dat文件300字节，每100个字节为一个用户的信息。
     * 其中:
     * 	 name为字符串，长度为32个字节，编码为:UTF-8
     *   password为字符串，长度为32个字节，编码为UTF-8
     * 	 nickName为字符串，长度为32个字节，编码为:UTF-8  - 该字段为昵称
     * 	 age为int,长度为4个字节
     * 提示:
     * 	该文件中已有的用户信息有：
     * 		张三  123456  张小三   23
     * 		王丽  123456  小丽    24
     *  	李可   123455 小可   26
     * 从控制台输入用户名，判断该用户是否存在user.dat中，
     * 		若存在，输入新密码，修改文件中的密码,并展示修改后user.dat中的用户信息
     * 		若不存在，提示“该用户不存在！”
     *
     *
     * @author Admin
     */
    public static void main(String[] args) {
                Gx();
    }
    public static void  Gx(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String name = scanner.nextLine();
        System.out.println("请输入密码");
        String mima = scanner.nextLine();
        boolean userFound = false;  // 标记用户是否找到
        try {
            RandomAccessFile file = new RandomAccessFile("user.dat","rw");
            byte[] data = new byte[32];
            for (int i = 0;i<file.length()/100;i++){
                file.read(data);
                String name1 = new String(data,"UTF-8").trim();
                file.read(data);
                String mima1 = new String(data,"UTF-8").trim();
                if(name1.equals(name) && mima1.equals(mima)){
                    userFound = true;  // 用户找到
                    System.out.println("请输入新密码");
                    String mima2 = scanner.nextLine();
                    file.seek(i*100+32);
                    byte[] data1 = Arrays.copyOf(mima2.getBytes(),32);
                    file.write(data1);
                    System.out.println("修改成功");
                    System.out.println("以下为用户信息:");
                    Duqu();
                    break;  // 找到用户后退出循环
                }
                // 跳过不需要的数据
                file.seek((i+1)*100);
            }
            if (!userFound) {
                System.out.println("该用户不存在");
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void Duqu(){
        try {
            RandomAccessFile file = new RandomAccessFile("user.dat","rw");
            byte[] buffer = new byte[32];
            for (int i = 0;i<file.length()/100;i++){
                file.read(buffer);
                String name = new String(buffer,"UTF-8").trim();
                file.read(buffer);
                String mima = new String(buffer,"UTF-8").trim();
                file.read(buffer);
                String nickName = new String(buffer,"UTF-8").trim();
                file.read(buffer);
                int age = file.readInt();
                System.out.println("用户名:"+name+"密码:"+mima+"昵称:"+nickName+"年龄:"+age);
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

